package filter;

import java.io.IOException;
import java.security.Principal;

import javax.ejb.EJB;
import javax.inject.Inject;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

import service.ProjetoService;
import service.RecursoService;
import util.UsuarioLogado;
import control.MenuControl;
import entity.Recurso;

@WebFilter(filterName = "AlmiranteFiltro",urlPatterns = {"/*"})
public class AlmiranteFiltro implements Filter {
	
	@Inject
	private UsuarioLogado usuarioLogado;
	
	@Inject
	private Principal userPrincipal;
	
	@Inject
	private MenuControl menuControl; 
	
	@EJB
	private RecursoService recursoService;
	
	@EJB
	private ProjetoService projetoService;
	
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		
		if (usuarioLogado == null || usuarioLogado.getRecursoLogado() == null){
			if (userPrincipal != null && !"anonymous".equals(userPrincipal.getName())){
				//System.out.println("USUARIO ESTÁ LOGADO.... " + userPrincipal.getName());
				
				Recurso recurso = recursoService.obterRecursoPorLogin(userPrincipal.getName());
				
				usuarioLogado.setRecursoLogado(recurso);
				
				//Já é feito no PostConstruct do MBean de Menu
				//menuControl.setProjetos(projetoService.listarProjetosPorRecurso(usuarioLogado.getRecursoLogado().getIdRecurso()));
			}
			
		}
			
		arg2.doFilter(arg0, arg1);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}
